#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <assert.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
    pid_t id = fork();
    if(id<0) //创建子进程失败
    {
        exit(1);
    } 
    else if(id == 0) //子进程
    {   
        int count = 5;
        while(count--)
        {       
           sleep(1);
        }
        exit(1);
    }
    //父进程等待子进程
    int status;
    pid_t ret = 0;
    do
    {
        ret = waitpid(id,&status,WNOHANG);
        //父进程做自己的事情
        printf("子进程正在运行中\n");
        sleep(1);
    } while (ret == 0);
    
    // int ExitCode = ((status>>8) & 0xFF); //退出状态
    // int Signal = (status & 0x7F);   //信号
    //使用一下宏函数
    if(WIFEXITED(status))
    {
        printf("子进程退出码为%d\n",WEXITSTATUS(status));
    }
    else
    {
        printf("等待失败\n");
    }
    sleep(5);
    return 0;
}